export type VoidCallback = () => void

export type EventCallback = (e:Event) => any
export interface Style {
    x?: number
    y?: number
    width?: number
    height?: number
    borderWidth?: number
    borderColor?: string|CanvasGradient
    radius?: number|number[]
    shadowX?: number
    shadowY?: number
    shadowBlur?: number
    shadowColor?: string
    rotate?: number
    scaleX?: number
    scaleY?: number
    opacity?: number
    background?: string|CanvasGradient
    overflow?: string
    originX?: number
    originY?: number
    zIndex?: number
    mode?: string
    mediaMaxWidth?: number
    mediaMaxHeight?: number
    color?: string|CanvasGradient
    align?: string
    font?: string
    [key:string]: any
}
export interface MediaFitOption {
    mediaWidth: number
    mediaHeight: number
    boxWidth: number
    boxHeight: number
    mode?: string
    maxWidth?: number
    maxHeight?: number
}
export interface MediaFitReturn {
    mediaX: number
    mediaY: number
    mediaWidth: number
    mediaHeight: number
    mediaOriginWidth: number
    mediaOriginHeight: number
}
export interface RoundRectPath{
    x: number
    y: number
    width: number
    height: number
    radius: number[]
    originX?: number
    originY?: number
    borderWidth?: number
}
export interface AnimateStyle {
    x?: number
    y?: number
    width?: number
    height?: number
    borderWidth?: number
    borderColor?: string
    radius?: number|number[]
    shadowX?: number
    shadowY?: number
    shadowBlur?: number
    shadowColor?: string
    rotate?: number
    scaleX?: number
    scaleY?: number
    opacity?: number
    background?: string|CanvasGradient
    originX?: number
    originY?: number
}
export interface AnimateFrame {
    duration?: number
    timing?: string
    count?: number
    style: AnimateStyle
}